package bupt.party.online.util;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间戳与字符串转换
 * 
 * @author Administrator
 * 
 */
public class DateUtil {

	/**
	 * 默认日期格式
	 */
	private static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";// Timestamp
																			// format
																			// must
																			// be
																			// yyyy-mm-dd
																			// hh:mm:ss[.fffffffff]
	private static final String SIMPLE_FORMAT = "yyyy-MM-dd";

	/**
	 * 默认构造函数
	 */
	private DateUtil() {
	}

	/**
	 * 字符串转换成日期 如果转换格式为空，则利用默认格式进行转换操作
	 * 
	 * @param str
	 *            字符串
	 * @param format
	 *            日期格式
	 * @return 日期
	 * @throws java.text.ParseException
	 */
	public static Date str2Date(String str, String format) throws ParseException {
		if (null == str || "".equals(str)) {
			return null;
		}
		// 如果没有指定字符串转换的格式，则用默认格式进行转换
		if (null == format || "".equals(format)) {
			format = DEFAULT_FORMAT;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.parse(str);
	}
	
	/**
	 * 字符串转换成日期 如果转换格式为空，则利用默认格式进行转换操作
	 * 
	 * @param str
	 *            yyyy-mm-dd
	 * @return 日期
	 * @throws java.text.ParseException
	 */
	public static String Date2Str(Date date) {
		if (null == date) {
			return null;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(SIMPLE_FORMAT);
		return sdf.format(date);
	}
	
	public static String Date2DefaultStr(Date date) {
		if (null == date) {
			return null;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_FORMAT);
		return sdf.format(date);
	}

	/**
	 * 日期转换为字符串
	 * 
	 * @param date
	 *            日期
	 * @param format
	 *            日期格式
	 * @return 字符串
	 */
	public static String date2Str(Date date, String format) {
		if (null == date) {
			return null;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(date);
	}

	/**
	 * 时间戳转换为字符串
	 * 
	 * @param time
	 * @return
	 */
	public static String timestamp2Str(Timestamp time) {
		Date date = null;
		if (null != time) {
			date = new Date(time.getTime());
		}
		return date2Str(date, SIMPLE_FORMAT);
	}

	/**
	 * 字符串转换时间戳
	 * 
	 * @param str
	 * @return
	 * @throws ParseException 
	 */
	public static Timestamp str2Timestamp(String str) throws ParseException {
		if(str == null || str.trim().length() == 0){
			return null;
		}
		
		Date date = null;
		if(str.indexOf(" ") <= 0){
			date = str2Date(str, "yyyy-MM-dd");
		}else{
			date = str2Date(str, DEFAULT_FORMAT);
		}
		return new Timestamp(date.getTime());
	}
	
	
	/**
	 * 字符串转换时间戳
	 * @eadgar endDate
	 * @param str
	 * @return
	 * @throws ParseException 
	 */
	public static Timestamp str1Timestamp(String str) throws ParseException {
		if(str == null || str.trim().length() == 0){
			return null;
		}
		
		Date date = null;
		if(str.indexOf(" ") <= 0){
			date = str2Date(str, "yyyy-MM");
		}else{
			date = str2Date(str, DEFAULT_FORMAT);
		}
		return new Timestamp(date.getTime());
	}

	
}
